#pragma once

#include "camera_Interface.h"

#include "spdlog/spdlog.h"
#include "spdlog/sinks/daily_file_sink.h"
#include "spdlog/fmt/ostr.h"
extern std::shared_ptr<spdlog::logger> logger;

class DhCameraInterface : public CameraInterface
{
public:
    CameraCallback m_CallBack ;
    void* m_Context;
    void* m_camera_handle = nullptr;

    virtual bool camera_init(char* name, CameraCallback pfunction, void* pcontext);

    virtual bool camera_end();

    virtual bool setExposureTime(double value);

    virtual bool setGainValue(double value);

    virtual bool getExposureTime(double& value);

    virtual bool getGainValue(double& value);

    virtual bool setTriggerMode(std::string name);

    virtual bool setTriggerSource(std::string name);

    virtual bool softwareTrigger();

};

//class HkCameraInterface : public CameraInterface
//{
//public:
//    CameraCallback m_CallBack ;
//    void* m_Context;
//    void* m_camera_handle = nullptr;
//	char* m_name = (char*)"";
//    virtual bool camera_init(char* name, CameraCallback pfunction, void* pcontext);

//    virtual bool camera_end();

//    virtual bool setExposureTime(double value);

//    virtual bool setGainValue(double value);

//    virtual bool getExposureTime(double& value);

//    virtual bool getGainValue(double& value);

//    virtual bool setTriggerMode(std::string name);

//    virtual bool setTriggerSource(std::string name);

//    virtual bool softwareTrigger();

//	virtual bool getFrameRate(double& value);

//	virtual bool getLossFrame(int& value);
//};


//extern "C" __declspec(dllexport)   CameraInterface* newInstance();
